package com.wind.taobao.api.trade.product.rest
{
	import com.wind.taobao.api.IPublicAPI;
	import com.wind.taobao.core.exception.InvalidRequestParametersException;
	import com.wind.taobao.core.util.TaobaoUtils;
	import com.wind.taobao.core.webservice.TaobaoRequest;

	/**
	 * taobao.products.search Request
	 * @author fxy
	 *
	 */
	public class ProductsSearchRequest extends TaobaoRequest implements IPublicAPI
	{
		public override function get method():String
		{
			return "taobao.products.search"
		}
		/**
		 * Y 	 需返回的字段列表.可选值:Product数据结构中的以下字段:product_id,name,pic_pach,cid,props,price,modified,tsc;多个字段之间用","分隔.
		 */
		[Bindable]
		public var fields:String="product_id,name,pic_pach,cid,props,price,modified,tsc";
		/**
		 * 搜索的关键词是用来搜索产品的title以及关键属性值的名称.如:"优衣库 1234",这种用来表示查询优衣库这个品牌下的货号为1234的产品;　注:q,cid和props至少传入一个
		 */
		[Bindable]
		public var q:String;
		/**
		 * 商品类目ID.调用taobao.itemcats.get.v2获取.
		 */
		[Bindable]
		public var cid:String;
		/**
		 * 属性,属性值的组合.格式:pid:vid;pid:vid;调用taobao.itemprops.get.v2获取类目属性pid,再用taobao.itempropvalues.get取得vid.
		 */
		[Bindable]
		public var props:String;
		/**
		 * N 	每页条数.每页返回最多返回100条,默认值为40.
		 */
		[Bindable]
		public var page_size:int;
		/**
		 * N 	页码.传入值为1代表第一页,传入值为2代表第二页,依此类推.默认返回的数据是从第一页开始.
		 */
		[Bindable]
		public var page_no:int;

		public override function validate():void
		{
			if (!TaobaoUtils.hasValue(fields))
			{
				throw new InvalidRequestParametersException("请求参数[fields]不能为空");
			}
			if (!TaobaoUtils.hasValue(q) || !TaobaoUtils.hasAllValue([cid, props]))
			{
				throw new InvalidRequestParametersException("请求参数[q]不能为空或者[cid][props]两个不能为空");
			}
		}
	}
}